home *** CD-ROM | disk | FTP | other *** search
Wrap
sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) NNNNAAAAMMMMEEEE sssseeeessssddddaaaaeeeemmmmoooonnnn - Fibre Channel Drive Enclosure Status/Configuration daemon SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS sssseeeessssddddaaaaeeeemmmmoooonnnn _s_e_s_d_a_e_m_o_n-_o_p_t_i_o_n_s-_f_i_l_e DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN sssseeeessssddddaaaaeeeemmmmoooonnnn is a daemon which allows communication with attached fibre channel drive enclosures; status is collected and re-configuration is allowed. The low-level transport protocol is the industry standard SES (SCSI-3 Enclosure Services). See sssseeeessssmmmmggggrrrr((((1111MMMM)))) for details. The sssseeeessssddddaaaaeeeemmmmoooonnnn is normally started automatically during boot if sssseeeessssddddaaaaeeeemmmmoooonnnn is cccchhhhkkkkccccoooonnnnffffiiiigggg'ed oooonnnn. One process containing 4 threads is started for each instance of sssseeeessssddddaaaaeeeemmmmoooonnnn; the backend polling thread which handles polling the drive enclosures for status, the frontend RPC thread which is responsible for communication with user interfaces like sssseeeessssmmmmggggrrrr, an event handler thread which handles FRU status change events, and a handler that executes the client's commands. Each event results in a user configurable callout shell script being executed. These scripts are user customizable. OOOOPPPPTTTTIIIIOOOONNNNSSSS The _s_e_s_d_a_e_m_o_n-_o_p_t_i_o_n_s-_f_i_l_e is provided for customizing certain aspects of sssseeeessssddddaaaaeeeemmmmoooonnnn operation. This file normally resides at ////eeeettttcccc////ccccoooonnnnffffiiiigggg////sssseeeessssddddaaaaeeeemmmmoooonnnn....ooooppppttttiiiioooonnnnssss. The contents of the file is a list of customizable variables and their values. PPPPoooollllllllPPPPeeeerrrriiiioooodddd Specifies the time, in seconds, between successive polls of the SAN enclosures. Status change detection is not interrupt driven so status changes will not be detected until the next poll period. The challenge in selecting an optimal polling period is to find an interval that is short enough to find failures quickly and yet long enough to avoid adding a significant amount of traffic to the SAN. Large or busy SAN's will require more time to execute a poll than smaller or less busy ones. However some FRU failures can cause automatic enclosure shutdowns in as little as 2 minutes. The default value is 66660000. EEEExxxxiiiittttNNNNooooCCCCttttllllrrrrssss On startup, if no fibre channel controllers are found in the system and this is set to 1, all of the sesdaemon threads will terminate. Changing it to 0 will let the threads run as usual whether controllers are present or not. This may be useful in the event controllers will be PPPPaaaaggggeeee 1111 sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) added later via PCI hotswap inserts. However, once added, an sssseeeessssmmmmggggrrrr ppppoooollllllll command must still be executed for sssseeeessssddddaaaaeeeemmmmoooonnnn to see the new controllers. If the daemons have already exited and need to be restarted, run ////eeeettttcccc////iiiinnnniiiitttt....dddd////sssseeeessssddddaaaaeeeemmmmoooonnnn ssssttttaaaarrrrtttt. The default value is 1111. PPPPrrrreeeeRRRReeeemmmmoooovvvvaaaallllCCCCaaaalllllllloooouuuutttt Specifies the pathname of the script to be executed just prior to performing a sssseeeessssmmmmggggrrrr rrrreeeemmmmoooovvvveeee command. The default value is ////uuuussssrrrr////lllliiiibbbb////sssseeeessssddddaaaaeeeemmmmoooonnnn////pppprrrreeeerrrreeeemmmmoooovvvveeee....CCCCOOOO. PPPPoooossssttttRRRReeeemmmmoooovvvvaaaallllCCCCaaaalllllllloooouuuutttt Specifies the pathname of the script to be executed immediately following the performance of a sssseeeessssmmmmggggrrrr rrrreeeemmmmoooovvvveeee command. The default value is ////uuuussssrrrr////lllliiiibbbb////sssseeeessssddddaaaaeeeemmmmoooonnnn////ppppoooossssttttrrrreeeemmmmoooovvvveeee....CCCCOOOO. PPPPoooossssttttIIIInnnnsssseeeerrrrttttiiiioooonnnnCCCCaaaalllllllloooouuuutttt Specifies the pathname of the script to be executed immediately following the performance of a ffffsssseeeessssmmmmggggrrrr iiiinnnnsssseeeerrrrtttt command. The default value is ////uuuussssrrrr////lllliiiibbbb////sssseeeessssddddaaaaeeeemmmmoooonnnn////ppppoooossssttttiiiinnnnsssseeeerrrrtttt....CCCCOOOO. SSSSttttaaaattttuuuussssCCCChhhhaaaannnnggggeeeeddddCCCCaaaalllllllloooouuuutttt Specifies the pathname of the script to be executed following a FRU status change. The default value is ////uuuussssrrrr////lllliiiibbbb////sssseeeessssddddaaaaeeeemmmmoooonnnn////ssssttttaaaattttcccchhhhaaaannnnggggeeeedddd....CCCCOOOO. DDDDeeeebbbbuuuuggggLLLLeeeevvvveeeellll Specifies the "verbosity" of sssseeeessssddddaaaaeeeemmmmoooonnnn. The default value is 0000. CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN OOOOFFFF EEEEVVVVEEEENNNNTTTT CCCCAAAALLLLLLLLOOOOUUUUTTTT SSSSCCCCRRRRIIIIPPPPTTTTSSSS The sssseeeessssddddaaaaeeeemmmmoooonnnn event handler executes one or more callout scripts in response to a FRU status change or user initiated reconfiguration. Each time a script is executed, 10 arguments are passed to it which a user can use to customize said scripts. For example, the SSSSttttaaaattttuuuussssCCCChhhhaaaannnnggggeeeeddddCCCCaaaalllllllloooouuuutttt script can be modified to send mail to a system administrator's chatty pager should a fault be detected. The arguments are as follows: _1 - _h_o_s_t _n_a_m_e A character string specifying the name of the host machine where the FRU status change was detected. _2 - _c_a_l_l_o_u_t _t_y_p_e A character string specifying the callout type. The possible values are _I_N_F_O, _R_E_C_O_N_F_I_G and _F_A_I_L_U_R_E. The types can be viewed in increasing priority of importance. The _I_N_F_O type is used when the FRU status change is informational and little or no system administrator PPPPaaaaggggeeee 2222 sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) intervention is needed. An example of an informational state change is a disk FRU transitioning from _n_o_t _p_r_e_s_e_n_t to _O_K following the insertion of of a previously absent disk drive. The _R_E_C_O_N_F_I_G type is used following a configuration change which may be of interest to the system administrator. An example of a reconfiguration state change is a disk FRU transitioning from _O_K to _N_O_T__P_R_E_S_E_N_T following the execution of a sssseeeessssmmmmggggrrrr rrrreeeemmmmoooovvvveeee command. The _F_A_I_L_U_R_E type is used when system administrator intervention is needed due to an unexpected FRU failure. _3 - _t_i_m_e _s_t_a_m_p A character string specifying the time at which the status change occurred. _4 - _c_h_a_n_n_e_l _I_D A numerical character string specifying the channel number on which the state change was detected. _5 - _e_n_c_l_o_s_u_r_e _I_D A numerical character string specifying the fibre channel drive enclosure on which the state change was detected. Is only specified for the case of the SSSSttttaaaattttuuuussssCCCChhhhaaaannnnggggeeeeddddCCCCaaaalllllllloooouuuutttt. It is set to -1 for other callouts. _6 - _F_R_U _t_y_p_e A character string specifying the type/class of FRU for which the status change is being reported. Possible values are _D_I_S_K (for disk FRUs), _P_S (for power supply FRUs), _F_A_N (for fan FRUs), _T_E_M_P for temperature, _A_L_A_R_M for alarm, and _L_C_C (for Link-Control-Card FRUs). _7 - _F_R_U _I_D A numerical character string specifying the ID of the FRU in an enclosure which underwent the state change. This would be the slot number, bay number, or LCC number in the enclosure. _8 - _F_R_U _N_A_M_E This is the identifier of the FRU, which in the case of drives is the world wide name in hex. _9 - _S_t_a_t_e _t_r_a_n_s_i_t_i_o_n _f_r_o_m _s_t_a_t_e A character string specifying the from state of the FRU state transition. Possible values are _O_K, _O_F_F, _F_A_I_L_E_D, _N_O_T-_P_R_E_S_E_N_T, _O_F_F if the FRU is not ready, and _U_N_S_U_P for not supported FRU types. It is only specified for the case of the SSSSttttaaaattttuuuussssCCCChhhhaaaannnnggggeeeeddddCCCCaaaalllllllloooouuuutttt. It is set to -1 for other callouts. _1_0 - _S_t_a_t_e _t_r_a_n_s_i_t_i_o_n _t_o _s_t_a_t_e A character string specifying the to state of the FRU state transition. Possible values are the same as the from state. PPPPaaaaggggeeee 3333 sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS The following is an example of a SSSSttttaaaattttuuuussssCCCChhhhaaaannnnggggeeeeddddCCCCaaaalllllllloooouuuutttt C-shell script which may be used to send mail to a system administrator following the detection of a FRU failure. #! /bin/csh -f # # If the status change is a failure, send mail to system # administrator. # set TMP="/tmp/statchanged_$$" if ("$2" == FAILURE) then echo "$6 #$7 in enclosure $5 on channel $4 on host $1 FAILED at $3" > $TMP Mail -s "FRU Failure" root@alpha.centauri.com < $TMP /bin/rm -f $TMP endif LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS If a communication path fails, the daemon will automatically try alternate paths to the other SES capable devices. However, driver retries before returning an error can make this a lengthy process. Losing the last SES drive in an enclosure or losing the link to an enclosure may be logged as an LCC failure. Enclosures which dont set their enclosure ID in their SES configuration page will be assigned an enclosure ID from the worldwide name of the first SES drive the daemon locates in the enclosure. Once the id is assigned, it will not be changed by the daemon if the enclosure configuration changes. However on later runs, this will result in the enclosure having a different ID. These utilities are not able to handle soft addressing. Proper SAN configuration is critical to their proper operation. The Xyratex 16 slot enclosure must use addressing mode 0 in 1x16 configurations and mode 2 in 2x8 configurations. Also be very careful if mixing 1x16 and 2x8 configured enclosures on the same loop. Extra care is required when setting the enclosure id's to prevent overlapping the target alpa ranges. If that happens, the other enclosures on the loop will switch to soft addressing. Not all enclosures support all capabilities of these utilities. Simulating failures may not result in exactly the same failure notifications as actual failures. Due to dependencies on drive types, this utility only supports IBM and PPPPaaaaggggeeee 4444 sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) sssseeeessssddddaaaaeeeemmmmoooonnnn((((1111mmmm)))) SEAGATE disk drives. If a target assigns different worldwide names to each of its ports, each port will be treated as an individual target. DDDDIIIIFFFFFFFFEEEERRRREEEENNNNCCCCEEEESSSS FFFFRRRROOOOMMMM FFFFCCCCAAAAGGGGEEEENNNNTTTT Although the sssseeeessssddddaaaaeeeemmmmoooonnnn/sssseeeessssmmmmggggrrrr utilities are designed to be similar in look and functionality, there are some important differences. Here are some of these: The arguments on the callouts are slightly different and if ffffccccaaaaggggeeeennnntttt callout code is re-used, these should be carefully checked and understood. The iiiinnnnsssseeeerrrrtttt and rrrreeeemmmmoooovvvveeee commands now make SOP_SCAN ioctls to the affected controllers and the callout scripts run at the proper times. iiiinnnnsssseeeerrrrtttt will also run iiiiooooccccoooonnnnffffiiiigggg to make device files for the new devices. bbbbyyyyppppaaaassssssss and uuuunnnnbbbbyyyyppppaaaassssssss do not run the insert and remove callouts. sssseeeessssddddaaaaeeeemmmmoooonnnn does not accept off host command requests and this configuration option has been removed. sssseeeessssddddaaaaeeeemmmmoooonnnn works with drives on private loops and fabrics. FFFFIIIILLLLEEEESSSS /usr/bin/sesdaemon /etc/config/sesdaemon.options /etc/init.d/sesdaemon /usr/lib/sesdaemon/postinsert.CO /usr/lib/sesdaemon/preremove.CO /usr/lib/sesdaemon/postremove.CO /usr/lib/sesdaemon/statchanged.CO SSSSEEEEEEEE AAAALLLLSSSSOOOO chkconfig(1M), ioconfig(1M), scsiha(7), sesmgr(1M) PPPPaaaaggggeeee 5555